home *** CD-ROM | disk | FTP | other *** search
/ COMPAQ Interactive Multimedia Training 1998 / COMPAQ.ISO / internet explorer 4.0 / en / content / wsj / funcs.js < prev    next >
Text File  |  1997-09-16  |  6KB  |  272 lines

  1.  
  2. /*
  3. Author: Ted Skolnick
  4. 8/15/97
  5.  
  6. This file contains all of the javascript functions used in the IE4 CD pages.
  7.  
  8. The most important parts are found at the very end of this file. Those
  9. are the calls to set the order of the pages.
  10.  
  11. */
  12.  
  13.  
  14. //-------- Class Recordset  ------------------
  15. // This is my javascript version 
  16. // of the data control's record set.  I use this because
  17. // the data control is too slow.
  18. function class_Recordset()
  19.     {
  20.     // The first Page starts just past all of the properties
  21.     // defined here.
  22.     this.first = 9;         
  23.     this.last  = this.first - 1;
  24.     this.curr = this.first;         
  25.  
  26.     // Add an Page method
  27.     this.addRecord = Recordset_addRecord;   
  28.  
  29.     // Move First
  30.     this.MoveFirst = Recordset_moveFirst;   
  31.  
  32.     // Move Last
  33.     this.MoveLast = Recordset_moveLast;   
  34.  
  35.     // Move Next
  36.     this.MoveNext = Recordset_moveNext;
  37.  
  38.     // Move Prev
  39.     this.MovePrev = Recordset_movePrev;   
  40.  
  41.     // Get the current position ( logical index )
  42.     // do not use this index to access this object as an array
  43.     // do all access through the provided methods.
  44.     this.AbsolutePosition = Recordset_AbsolutePosition;
  45.  
  46.     // Get the number of records
  47.     this.RecordCount = Recordset_recordCount;    
  48.  
  49.     // Get the current record
  50.     this.getCurrent = Recordset_getCurrent;
  51.     }
  52.  
  53. function Recordset_getCurrent()
  54.     {
  55.     return this[ this.curr ];
  56.     }
  57.  
  58. function Recordset_addRecord( newRecord )   
  59.     {
  60.     this.last++;
  61.     this[this.last]=newRecord;
  62.     }
  63.  
  64. function Recordset_moveFirst()   
  65.     {
  66.     this.curr = this.first;
  67.     }
  68.  
  69. function Recordset_moveLast()   
  70.     {
  71.     this.curr = this.last;
  72.     }
  73.  
  74. function Recordset_moveNext()
  75.     {
  76.     if ( this.curr < this.last )
  77.         this.curr++; 
  78.     }
  79.  
  80. function Recordset_movePrev()
  81.     {
  82.     if ( this.curr > this.first )
  83.         this.curr--; 
  84.     }
  85.  
  86. function Recordset_AbsolutePosition()
  87.     {
  88.     return ( this.curr - this.first + 1 );
  89.     }
  90.  
  91. function Recordset_recordCount()    
  92.     {
  93.     return ( this.last - this.first + 1 );
  94.     }
  95.  
  96.  
  97.  
  98. // Remove any chars included in the given set
  99. function removeCharsInSet( StringIn, SetOfInvalidChars )
  100.     {
  101.     var retVal = ""
  102.     var i = 0;
  103.  
  104.     // If char is alnum then it is OK
  105.     for ( i = 0; i < StringIn.length; i++ ) 
  106.         {
  107.         if ( !isCharInSet( StringIn.charAt( i ), SetOfInvalidChars) )
  108.             retVal += StringIn.charAt( i ); 
  109.         }
  110.  
  111.     return retVal;
  112.     }
  113.  
  114.  
  115. // Remove chars not included in the given set,
  116. // result is a string that has only chars that apear in the set
  117. function includeCharsInSet( StringIn, SetOfValidChars )
  118.     {
  119.     var retVal = "";
  120.     var i = 0;
  121.  
  122.     // If char is alnum then it is OK
  123.     for ( i = 0; i < StringIn.length; i++ ) 
  124.         {
  125.         if ( isCharInSet( StringIn.charAt( i ), SetOfValidChars ) )
  126.             retVal += StringIn.charAt( i ); 
  127.         }
  128.  
  129.     return retVal;
  130.     }
  131.  
  132.  
  133. // Return true if the char is found in the given set.
  134. function isCharInSet( charIn, charSetToSearch )
  135.     {
  136.     var foundCharInSet = false;
  137.     var i = 0;
  138.  
  139.     // If char is in the set return true
  140.     while ( ( !foundCharInSet ) && ( i < charSetToSearch.length ) )
  141.         {
  142.         if ( charSetToSearch.charAt( i ) == charIn.toLowerCase() )
  143.             {
  144.             foundCharInSet = true;
  145.             }
  146.         i++;
  147.         }
  148.  
  149.     return foundCharInSet;
  150.     }
  151.  
  152.  
  153.  
  154. // Take a string of the form "10px" and just return
  155. // the value 10
  156. function toInt( pixVal )
  157.     {
  158.     var ret = 0;
  159.     var s = "" + pixVal;
  160.  
  161.     s = includeCharsInSet( s, "-.1234567890");
  162.  
  163.  
  164.     if ( s.length < 1 )
  165.         s = "0";
  166.  
  167.     return eval( s );
  168.     }
  169.  
  170.  
  171. // Telll every ScreenItem to resize();
  172. function resizeAll()
  173.     {
  174.  
  175.     frameNextPrev.resize();
  176.  
  177. // NOTE IE4 bug this code below does not work
  178. //    var i = 0;
  179. //    var obj = null;
  180. //
  181. //    // For all screen items, scale them
  182. //    for ( i = 0; i < document.all.length; i++ )
  183. //        {
  184. //        obj = document.all[i];
  185. //        if ( "ScreenItem" == obj.className )
  186. //            {
  187. //            obj.resize();
  188. //            }
  189. //        }
  190.     }
  191.  
  192.  
  193.  
  194. function find_string( what, inwhat )
  195.     {
  196.     return ( inwhat.indexOf( what ) >= 0)
  197.     }
  198.  
  199.  
  200.  
  201. // Look through all the pages in the sequnce
  202. // and stop at the one Whose URL mathces the URL
  203. // that was passed in.  
  204. function seek_to_value( UrlToFind )
  205.     {
  206.     var bDone = false;
  207.     rs.MoveFirst();
  208.  
  209.     while ( !bDone )
  210.         {
  211.         bDone = (rs.AbsolutePosition() >= rs.RecordCount() );
  212.         bDone = bDone || ( find_string( rs.getCurrent().url.toLowerCase(), UrlToFind.toLowerCase()  ))
  213.         if ( !bDone )
  214.             rs.MoveNext();
  215.         }
  216.     }
  217.  
  218.  
  219. //------------- Class Record --------------------
  220.  
  221. function class_Record( URLIn )
  222.     {
  223.     this.url = URLIn;
  224.     }
  225.  
  226.  
  227.  
  228. // Go to the next page in the sequence of pages.
  229. function next()
  230.     {
  231.     // First move to the current page, based on the current
  232.     // URL. then step to the next entry.
  233.     seek_to_value( parent.window.top.location.href );
  234.     rs.MoveNext();
  235.     window.top.location = rs.getCurrent().url;
  236.     }
  237.  
  238.  
  239. // Go to the previous page in the sequence.
  240. function prev()
  241.     {
  242.     // First move to the current page, based on the current
  243.     // URL. then step to the prev entry.
  244.     seek_to_value( parent.window.top.location.href );
  245.     rs.MovePrev();
  246.     window.top.location = rs.getCurrent().url;
  247.     }
  248.  
  249.  
  250. // Create an instance of the record set.
  251. var rs = new class_Recordset();
  252.  
  253.  
  254. // These lines set the order of pages for stepping
  255. // using the Next and prev buttons above.
  256. // If you change the order here in this one file,
  257. // all HTML pages in the sequence will pick it up
  258. // and follow the new order.
  259.  
  260. rs.addRecord( new class_Record( "1_1.htm" ) );
  261. rs.addRecord( new class_Record( "2_1.htm" ) );
  262. rs.addRecord( new class_Record( "3_1.htm" ) );
  263. rs.addRecord( new class_Record( "3_2.htm" ) );
  264. rs.addRecord( new class_Record( "3_3.htm" ) );
  265. rs.addRecord( new class_Record( "4_1.htm" ) );
  266. rs.addRecord( new class_Record( "5_1.htm" ) );
  267. rs.addRecord( new class_Record( "5_2.htm" ) );
  268. rs.addRecord( new class_Record( "5_3.htm" ) );
  269. rs.addRecord( new class_Record( "5_4.htm" ) );
  270. rs.addRecord( new class_Record( "5_5.htm" ) );
  271. rs.addRecord( new class_Record( "6.htm" ) );
  272.